<?php
require_once("./banco/BancoMysql.php");
require "./base/Usuario.php";

class RepositorioUsuario {

	private $usuarios;
	private $db;

	public function __construct($usuarios = array (), $db = "MySQL") {
		$this->setUsuarios($usuarios);
		$this->setDb($db);
	}

	public function setDb($valor) {
		$banco = "Banco" . $valor;
		$this->db = new $banco ();

		$this->db->setDb('weegodb');
	}

	public function setUsuarios($valor) {
		$this->usuarios = $valor;
	}

	public function getUsuarios() {
		return $this->usuarios;
	}

	public function inserirUsuario($usuario) {
		$this->db->abrirConexao();
		$sql = "INSERT INTO Usuario(nome, login, senha, empresa_id, status, email, telefone) VALUES('?','?','?',?,?,'?','?')";
		$sqlPartes = explode('?', $sql);
		$sql = $sqlPartes[0] . $usuario->getNome() . $sqlPartes[1] . $usuario->getLogin() . $sqlPartes[2] . $usuario->getSenha() . $sqlPartes[3] . $usuario->getEmpresa_id() . $sqlPartes[4] . $usuario->getStatus() . $sqlPartes[5] . $usuario->getEmail() . $sqlPartes[6] . $usuario->getTelefone() . $sqlPartes[7];
				
		if ( $this->db->executaComando($sql) ) {			
			return true;			
		} else {
			return false;
		}
		$this->db->fecharConexao();
	}
	
	public function inserirPerfil($perfil){
		$this->db->abrirConexao();
		$sql = "SELECT MAX(id) FROM Usuario";
		if ( $this->db->executaConsulta($sql) ) {
			$matrizResult = $this->db->getResultSet();
		}
		$idUsuario = $matrizResult[0][0];
		
		$sql = "DELETE FROM perfil WHERE usuario_id = ".$idUsuario; 
		
		if ( $this->db->executaComando($sql) ) {			
			$sql = "INSERT INTO perfil VALUES "; 
			for ($i=0; $i<count($perfil); $i++ ) {
				$sql .= "(".$idUsuario.",".$perfil[$i].")";	
				if ($i!=(count($perfil)-1)) {
					$sql .= ", ";
				}
			}
			
			if ( $this->db->executaComando($sql) ) {			
				return true;
			} else {
				return false;
			}
		} else {
			return false;
		}		
		$this->db->fecharConexao();
	}
	
	public function inserirPerfilFunc($idUsuario, $perfil){
		$this->db->abrirConexao();
		$sql = "DELETE FROM perfil WHERE usuario_id = ".$idUsuario; 
		
		if ( $this->db->executaComando($sql) ) {			
			$sql = "INSERT INTO perfil VALUES "; 
			for ($i=0; $i<count($perfil); $i++ ) {
				$sql .= "(".$idUsuario.",".$perfil[$i].")";	
				if ($i!=(count($perfil)-1)) {
					$sql .= ", ";
				}
			}
			
			if ( $this->db->executaComando($sql) ) {			
				return true;
			} else {
				return false;
			}
		} else {
			return false;
		}		
		$this->db->fecharConexao();
	}
	
	public function selecionarUsuario($usuario=null) {
		$this->db->abrirConexao();
		$sql = "SELECT * FROM Usuario";
		if (!empty($usuario)) {
			$sql .= " WHERE login = '". $usuario->getLogin() ."'";
		}

		if ( $this->db->executaConsulta($sql) ) {
			$matrizResult = $this->db->getResultSet();
						
			for ($i=0; $i<count($matrizResult); $i++ ) {
				$this->addUsuario( new Usuario($matrizResult[$i]['login'], $matrizResult[$i]['senha'], $matrizResult[$i]['nome'], $matrizResult[$i]['id']) );
			}
			
			return true;
		} else {
			return false;
		}
		
		$this->db->fecharConexao();
	}
	
	public function verificaLogin($usuario) {
		$this->db->abrirConexao();
		$sql = "SELECT * FROM Usuario WHERE status = 1 AND login = '". $usuario->getLogin() ."' AND senha='". $usuario->getSenha() ."' AND empresa_id = ".$usuario->getEmpresa_id();		

		if ( $this->db->executaConsulta($sql) ) {
			$matrizResult = $this->db->getResultSet();
						
			for ($i=0; $i<count($matrizResult); $i++ ) {
				$this->addUsuario( new Usuario($matrizResult[$i]['login'], $matrizResult[$i]['senha'], $matrizResult[$i]['empresa_id'], $matrizResult[$i]['nome'], $matrizResult[$i]['id'], $matrizResult[$i]['email'], $matrizResult[$i]['telefone']) );
			}
			
			return $matrizResult;
		} else {
			return null;
		}
		
		$this->db->fecharConexao();
	}
	
	public function obterPerfil($func){
		$this->db->abrirConexao();
		session_start();
		$sql = "SELECT * FROM perfil WHERE funcionalidade_id = " . $func . " AND usuario_id = ". $_SESSION['usuario']['ID'];
		if ( $this->db->executaConsulta($sql) ) {			
			$matrizResult = $this->db->getResultSet();
			if (count( $matrizResult ) > 0 ) {
				return true;
			} else {
				return false;
			}			
		} else {
			return false;
		}		
		$this->db->fecharConexao();
	}
	
	public function alterarUsuario($usuario) {
		$this->db->abrirConexao();
		$sql = "UPDATE usuario SET nome = '?', senha = '?', email = '?', telefone = '?' WHERE id = ?";
		$sqlPartes = explode('?', $sql);
		$sql = 	$sqlPartes[0] . 
				$usuario->getNome() . $sqlPartes[1] . 
				$usuario->getSenha() . $sqlPartes[2] . 
				$usuario->getEmail() . $sqlPartes[3] . 				
				$usuario->getTelefone() . $sqlPartes[4] . 				
				$usuario->getId() . $sqlPartes[5];
					
		if ( $this->db->executaComando($sql) ) {
			session_start();
			$_SESSION['usuario']['NOME'] = $usuario->getNome();
			$_SESSION['usuario']['SENHA'] = $usuario->getSenha();
			$_SESSION['usuario']['EMAIL'] = $usuario->getEmail();
			$_SESSION['usuario']['TELEFONE'] = $usuario->getTelefone();
			return true;
		} else {
			return false;
		}
		$this->db->fecharConexao();
	}
	
	public function alterarStatusUsuario($idUsuario, $status) {
		$this->db->abrirConexao();
		$sql = "UPDATE usuario SET status = ".$status." WHERE id = ".$idUsuario;		
							
		if ( $this->db->executaComando($sql) ) {			
			return true;
		} else {
			return false;
		}
		$this->db->fecharConexao();
	}
	
	public function listarUsuarios($idEmpresa) {
		$this->db->abrirConexao();
		$sql = "SELECT u.ID, u.NOME, u.STATUS ". 
			   "FROM usuario u WHERE u.EMPRESA_ID =".$idEmpresa;				
		if ( $this->db->executaConsulta($sql) ) {
			$matrizResult = $this->db->getResultSet();	
			
			return $matrizResult;
		}		
		
		$this->db->fecharConexao();
	}
	
	public function listarUsuarioMembroEquipe($idempresa, $idequipe) {
		$this->db->abrirConexao();		
		
		if (!empty($idequipe)) {
			$sql =  "SELECT U.id, U.nome, ME.id, ME.equipe_id   ".
					"FROM usuario U ".
					"LEFT JOIN membro_equipe ME on (ME.usuario_id = U.id AND ME.equipe_id = ". $idequipe .")".
					"WHERE U.empresa_id = " . $idempresa;		
		} else {
			$sql =  "SELECT U.id, U.nome FROM usuario U ".					
					"WHERE U.empresa_id = " . $idempresa;		
		}
				
		if ( $this->db->executaConsulta($sql) ) {
			$matrizResult = $this->db->getResultSet();	
			
			return $matrizResult;
		}				
		$this->db->fecharConexao();
	}
	
	public function listarUsuarioMembroProjeto($idempresa, $idprojeto) {
		$this->db->abrirConexao();
		
		if (!empty($idprojeto)) {
			$sql =  "SELECT U.id, U.nome, MP.projeto_id ".
					"FROM usuario U ".
					"LEFT JOIN membro_projeto MP on (MP.usuario_id = U.id  AND MP.projeto_id = ". $idprojeto .") ".
					"WHERE U.empresa_id = " . $idempresa;	
		} else {
			$sql =  "SELECT U.id, U.nome FROM usuario U ".					
					"WHERE U.empresa_id = " . $idempresa;		
		}	
		
	
		if ( $this->db->executaConsulta($sql) ) {
			$matrizResult = $this->db->getResultSet();	
			
			return $matrizResult;
		}				
		$this->db->fecharConexao();
	}
		
	public function addUsuario($usuario) {
		array_push($this->usuarios, $usuario);
	}		
}
?>
